export default {

	/**
	 * 发起完整 HTTPS 网络请求
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param header        Object，非必传,默认值："{ 'content-type': 'application/json' }",设置请求的 header，header 中不能设置 Referer。
	 * @param timeout       number，非必传,默认值：	否，超时时间，单位为毫秒
	 * @param method        string，非必传,默认值：GET，HTTP 请求方法,可取值为
	 *              @link { get }       GET	     HTTP 请求 GET
	 *              @link { post }      POST	 HTTP 请求 POST
	 *              @link { put }       PUT	     HTTP 请求 PUT
	 *              @link { delete }    DELETE	 HTTP 请求 DELETE
	 *                                  OPTIONS	 HTTP 请求 OPTIONS
	 *                                  HEAD	 HTTP 请求 HEAD
	 *                                  TRACE	 HTTP 请求 TRACE
	 *                                  CONNECT	 HTTP 请求 CONNECT
	 * @param dataType      string，非必传,默认值：json，	返回的数据格式
	 * @param responseType  string，非必传,默认值：text，	响应的数据类型
	 * @param enableHttp2   boolean，非必传,默认值：false，开启 http2
	 * @param enableQuic    boolean，非必传,默认值：false，开启 quic
	 * @param enableCache   boolean，非必传,默认值：false，开启 cache
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 *
	 */
	requestFull(url, data = null, header = {'content-type': 'application/json'}, timeout = null, method = 'GET', dataType = 'json', responseType = 'text', enableHttp2 = false, enableQuic = false, enableCache = false, success, fail = null, complete = null) {
		wx.request({
			url,
			data,
			header,
			timeout,
			method,
			dataType,
			responseType,
			enableHttp2,
			enableQuic,
			enableCache,
			success,
			fail,
			complete
		});
	},

	/**
	 * 简单https 请求
	 * @see {requestFull}
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param method        string，非必传,默认值：GET，HTTP 请求方法,可取值为
	 *              @link { get }       GET	     HTTP 请求 GET
	 *              @link { post }      POST	 HTTP 请求 POST
	 *              @link { put }       PUT	     HTTP 请求 PUT
	 *              @link { delete }    DELETE	 HTTP 请求 DELETE
	 *                                  OPTIONS	 HTTP 请求 OPTIONS
	 *                                  HEAD	 HTTP 请求 HEAD
	 *                                  TRACE	 HTTP 请求 TRACE
	 *                                  CONNECT	 HTTP 请求 CONNECT
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 */
	request(url,data = null,method,success,fail = null,complete = null){
		this.requestFull(
			url,
			data,
			{
				'content-type': 'application/json'
			},
			null,
			method,
			'json',
			'text',
			false,
			false,
			false,
			success,
			fail,
			complete
		);
	},

	/**
	 * HTTP - GET 请求
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 */
	get(url,success,fail,complete){
		this.request(url,null,'GET',success,fail,complete);
	},

	/***
	 * 异步调用 get
	 * @param url
	 * @param complete
	 * @returns {Promise}
	 */
	asyncGet(url){
		return new Promise((resolve, reject)=>{
			this.get(url,(res) => {
				resolve(res);
			},(res) => {
				reject(res);
			});
		});
	},

	/**
	 * HTTP - POST 请求
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 */
	post(url,data,success,fail,complete){
		this.request(url,data,'POST',success,fail,complete);
	},

	/**
	 * HTTP - PUT 请求
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 */
	put(url,data,success,fail,complete){
		this.request(url,data,'PUT',success,fail,complete);
	},

	/**
	 * HTTP - DELETE 请求
	 * @param url           string，必传值,服务器接口地址
	 * @param data          string/object/ArrayBuffer，非必传,默认值：null，请求的参数
	 * @param success       function，非必传,接口调用成功的回调函数
	 * @param fail          function，非必传,接口调用失败的回调函数
	 * @param complete      function，非必传,接口调用结束的回调函数（调用成功、失败都会执行）
	 */
	delete(url,data,success,fail,complete){
		this.request(url,data,'DELETE',success,fail,complete);
	},

	/**
	 *
	 * @param url
	 * @param data
	 * @param success
	 * @param fail
	 * @param complete
	 */
	postOfXWWWFormUrlEncoded(url,data,success,fail,complete) {
		this.requestFull(
			url,
			data,
			{
				'content-type': 'application/x-www-form-urlencoded'
			},
			null,
			'POST',
			'json',
			'text',
			false,
			false,
			false,
			success,
			fail,
			complete
		);
	}
}
